#pragma once
#include "470bot.h"
#include "Command.h"
#include "Vector2.h"

#define POSITION_THRESHOLD .1
#define BACKUP 20

class AgentState;

class Agent
{
public:
	Agent(tank_t* tank);
	~Agent(void);

	Command GetCommand();
	tank_t* getTank();
	void setState(AgentState* newState, bool checkForStuck=true);

private:
	Vector2 prevPos;
	bool checkStuck;
	int stuck;
	int turn;
	bool isStuck;
	int iterations;

	AgentState* currentState;

	tank_t* tank;
};

